package com.hliushi.learn.quartz.job;

import lombok.extern.slf4j.Slf4j;
import org.quartz.*;

import java.time.LocalDateTime;
import java.util.Map;
import java.util.Set;

/**
 * 自定义Job
 *
 * @author llhuang10
 * @date 2021/10/24 18:19
 */
@Slf4j
public class HelloJob implements Job {

    public HelloJob() {
        // 使用无参构造器测试这个Hello是否为单例的
        // 控制台输出一次 --> 表示为单例
        // 控制台输出多次 --> 每次执行定时任务都会创建一个实例
        log.info("HelloJob被创建了");
    }

    /**
     * 当任务触发时执行任务
     *
     * @param jobExecutionContext 任务执行时的上下文对象
     * @throws JobExecutionException
     */
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        JobDetail jobDetail = jobExecutionContext.getJobDetail();

        // 获取存放的任务状态信息
        JobDataMap jobDataMap = jobDetail.getJobDataMap();
        Set<Map.Entry<String, Object>> entries = jobDataMap.entrySet();
        entries.forEach(entry -> log.info("{} : {}", entry.getKey(), entry.getValue()));
        log.info("jobDetail: {}, 自定义Job执行, 执行时间为: {}", jobDetail.hashCode(), LocalDateTime.now());
    }
}
